/**
 * 栈的 顺序储存结构, 是使用数组的形式
 */
#ifndef _SEQSTACK_
#define _SEQSTACK_

#define Status int
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 100

typedef int ElemType;

typedef struct {
    // 指向栈顶的指针
    ElemType *top;
    // 指向栈底的指针
    ElemType *base;
    // 栈可用最大容量
    int stackSize;
} Stack;

// 初始化
Status InitStack(Stack *stack);

// 销毁
Status DestroyStack(Stack *stack);

// 判断是否为空
int StackEmpty(Stack stack);

// 求栈的长度
int StackLength(Stack stack);

// 取栈顶元素
Status GetTop(Stack stack, ElemType *e);

// 置空栈
Status ClearStack(Stack *stack);

// 压栈
Status Push(Stack *stack, ElemType e);

// 弹栈
Status Pop(Stack *stack, ElemType *e);

#endif